home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Languguage OS 2
/
Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO
/
gnu
/
nihcl-30.lha
/
nihcl-3.0
/
vectest
/
bytevec.c
< prev
next >
Wrap
C/C++ Source or Header
|
1990-05-16
|
7KB
|
204 lines
/* Test Vector ByteVec class
THIS SOFTWARE FITS THE DESCRIPTION IN THE U.S. COPYRIGHT ACT OF A
"UNITED STATES GOVERNMENT WORK". IT WAS WRITTEN AS A PART OF THE
AUTHOR'S OFFICIAL DUTIES AS A GOVERNMENT EMPLOYEE. THIS MEANS IT
CANNOT BE COPYRIGHTED. THIS SOFTWARE IS FREELY AVAILABLE TO THE
PUBLIC FOR USE WITHOUT A COPYRIGHT NOTICE, AND THERE ARE NO
RESTRICTIONS ON ITS USE, NOW OR SUBSEQUENTLY.
Author:
Ted Persky
Bg. 12A, Rm. 2031
Computer Systems Laboratory
Division of Computer Research and Technology
National Institutes of Health
Bethesda, Maryland 20892
Phone: (301) 496-2963
uucp: uunet!nih-csl!tpersky
Internet:tpersky@alw.nih.gov
Function:
Modification History:
$Log: bytevec.c,v $
* Revision 3.0 90/05/16 23:06:33 kgorlen
* Release for 1st edition.
*
*/
#include "IntVec.h"
#include "ByteVec.h"
static char rcsid[] = "$Header: /afs/alw.nih.gov/unix/sun4_40c/usr/local/src/nihcl-3.0/share/vectest/RCS/bytevec.c,v 3.0 90/05/16 23:06:33 kgorlen Rel $";
static int initI[] = { 1,3,5 };
static const IntVec I(initI,3); // I = { 1 3 5 }
#ifndef BUG_OPTYPECONST
static ByteVec A(10,1); // A = { 1 2 3 4 5 6 7 8 9 10 }
static ByteVec B = reverse(ByteVec(10,1,1)); // B = { 10 9 8 7 6 5 4 3 2 1 }
#else
static const ByteVec A(10,1); // A = { 1 2 3 4 5 6 7 8 9 10 }
static const ByteVec B = reverse(ByteVec(10,1,1)); // B = { 10 9 8 7 6 5 4 3 2 1 }
#endif
void test1()
{
BitVec L;
// TYPEVec_CTOR_I
ByteVec C; // C = {}
// TYPEVec_CTOR_I_TYPE_TYPE
ByteVec D(10,3,1); // D = { 3 4 5 6 7 8 9 10 11 12 }
cerr << "ByteVec D(10,3,1): " << D << endl;
// FRIEND_reverse_TYPESlice
D = reverse(D); // D = { 12 11 10 9 8 7 6 5 4 3 }
cerr << "reverse(D): " << D << endl;
// TYPEVec_CTOR_TYPEVec
ByteVec T(A); // T = A
cerr << "ByteVec T(A): " << T << endl;
// TYPEVec_CTOR_TYPESlice
ByteVec U(A(0,5,2)); // U = { 1 3 5 7 9 }
cerr << "ByteVec U(A(0,5,2)): " << U << endl;
// TYPEVec_ASN_TYPEVec
C = U;
cerr << "C = U: " << C << endl;
// TYPEVec_ASN_TYPEVec
C = C;
cerr << "C = C: " << C << endl;
// TYPEVec_ASN_TYPESlice
C = A(0,5,2); // C = { 1 3 5 7 9 }
cerr << "C = A(0,5,2): " << C << endl;
// TYPEVec_ASN_TYPESlice
C = A; C = C(0,5,2); // C = { 1 3 5 7 9 }
cerr << "C = A; C = C(0,5,2): " << C << endl;
// TYPEVec_ASN_TYPESlct
C = A[A>B]; // C = { 6 7 8 9 10 }
cerr << "C = A[A>B]: " << C << endl;
// TYPEVec_ASN_TYPESlct
C = A; C = C[C>B]; // C = { 6 7 8 9 10 }
cerr << "C = A; C = C[C>B]: " << C << endl;
// TYPEVec_ASN_TYPEPick
C = A[I]; // C = { 2 4 6 }
cerr << "C = A[I]: " << C << endl;
// TYPEVec_ASN_TYPEPick
C = A; C = C[I]; // C = { 2 4 6 }
cerr << "C = A; C = C[I]: " << C << endl;
// TYPEVec_ASN_TYPE
C = 0;
cerr << "C = 0: " << C << endl;
// TYPESlice_ASN_TYPEVec
C = A; C(0,5,2) = ByteVec(5,50,0); // C = { 50 2 50 4 50 6 50 8 50 10 }
cerr << "C = A; C(0,5,2) = ByteVec(5,50,0): " << C << endl;
// TYPESlice_ASN_TYPESlice
C(1,5,2) = C(0,5,2); // C = { 50 50 50 50 50 50 50 50 50 50 }
cerr << "C(1,5,2) = C(0,5,2): " << C << endl;
// TYPESlice_ASN_TYPEPick
C(0,3,1) = A[I]; // C = { 2 4 6 50 50 50 50 50 50 50 }
cerr << "C(0,3,1) = A[I]: " << C << endl;
// TYPESlice_ASN_TYPESlct
C(3,3,1) = A[A<=3]; // C = { 2 4 6 1 2 3 50 50 50 50 }
cerr << "C(3,3,1) = A[A<=3]: " << C << endl;
// TYPESlice_ASN_TYPE
C(0,6,1) = 0; // C = { 0 0 0 0 0 0 50 50 50 50 }
cerr << "C(0,6,1) = 0:" << C << endl;
// FRIEND_INCDECOP_TYPESlice__TYPEVec
// C++; // C = { 1 1 1 1 1 1 51 51 51 51 }
cerr << "C++: "; (C++).printOn(cerr); cerr << endl;
// FRIEND_TYPESlice_OP_TYPESlice__TYPEvec
C = D-B; // C = { 2 2 2 2 2 2 2 2 2 2 }
cerr << "C = D-B: " << C << endl;
// FRIEND_TYPESlice_OP_TYPE__TYPEVec
C = A-1; // C = { 0 1 2 3 4 5 6 7 8 9 }
cerr << "C = A-1: " << C << endl;
// FRIEND_TYPE_OP_TYPESlice__TYPEVec
C = 1 + A; // C = { 2 3 4 5 6 7 8 9 10 11 }
cerr << "C = 1+A: " << C << endl;
// FRIEND_TYPESlice_OP_TYPESlice__BitVec
L = A>B;
cerr << "A>B: " << L << endl; // { 0 0 0 0 0 1 1 1 1 1 }
// FRIEND_TYPESlice_OP_TYPE__BitVec
L = A<=5; // { 1 1 1 1 1 0 0 0 0 0 }
cerr << "A<=5: " << L << endl;
// FRIEND_TYPE_OP_TYPESlice__BitVec
L = 5<A; // { 0 0 0 0 0 1 1 1 1 1 }
cerr << "5<A: " << L << endl;
// FRIEND_TYPESlice_ASNOP_TYPESlice
C = A; C += A; // { 2 4 6 8 10 12 14 16 18 20 }
cerr << "C = A; C += A: " << C << endl;
// FRIEND_TYPESlice_ASNOP_TYPE
C -= 1; // { 1 3 5 7 9 11 13 15 17 19 }
cerr << "C -= 1: " << C << endl;
// TYPEPick_ASN_TYPEVec
C = A; C[I] = ByteVec(3,50,0); // { 1 50 3 50 5 50 7 8 9 10 }
cerr << "C = A; C[I] = ByteVec(3,50,0): " << C << endl;
// TYPEPick_ASN_TYPEPick
C[I] = A[I]; // { 1 2 3 4 5 6 7 8 9 10 }
cerr << "C[I] = A[I]: " << C << endl;
// TYPEPick_ASN_TYPESlct
C[I] = A[A<=3]; // C = { 1 1 3 2 5 3 7 8 9 10 }
cerr << "C[I] = A[A<=3]: " << C << endl;
// TYPEPick_ASN_TYPESlice
C[I] = A(0,3,2); // C = { 1 1 3 3 5 5 7 8 9 10 }
cerr << "C[I] = A(0,3,2): " << C << endl;
// TYPEPick_ASN_TYPE
C[I] = 50; // C = { 1 50 3 50 5 50 7 8 9 10 }
cerr << "C[I] = 50: " << C << endl;
}
void test2()
{
BitVec L;
// TYPEVec_CTOR_I
ByteVec C; // C = {}
// TYPESlct_ASN_TYPEVec
C = A; C[A<=5] = ByteVec(5,50,0); // C = { 50 50 50 50 50 6 7 8 9 10 }
cerr << "C = A; C[A<=5] = ByteVec(5,50,0): " << C << endl;
// TYPESlct_ASN_TYPEPick
C = A; C[A<=3] = A[I]; // C = { 2 4 6 4 5 6 7 8 9 10 }
cerr << "C = A; C[A<=3] = A[I]: " << C << endl;
// TYPESlct_ASN_TYPESlct
C = A; C[A<=5] = B[A<=5]; // C = { 10 9 8 7 6 6 7 8 9 10 }
cerr << "C = A; C[A<=5] = B[A<=5]: " << C << endl;
// TYPESlct_ASN_TYPESlice
C[A<=5] = A(0,5,1); // C = { 1 2 3 4 5 6 7 8 9 10 }
cerr << "C = A; C[A<=5] = A(0,5,1): " << C << endl;
// TYPESlct_ASN_TYPE
C[A<=5] = 0; // C = { 0 0 0 0 0 6 7 8 9 10 }
cerr << "C = A; C[A<=5] = 0: " << C << endl;
// TYPESlice_CTOR_TYPESlct
C = A[A<=5] + B[B<=5]; // C = { 6 6 6 6 6 }
cerr << "C = A[A<=5] + B[B<=5]: " << C << endl;
// FRIEND_cumsum_TYPESlice
C = cumsum(ByteVec(10,1));
cerr << "cumsum(ByteVec(10,1)): " << C << endl;
// FRIEND_delta_TYPESlice
C = delta(C);
cerr << "delta(cumsum(ByteVec(10,1))): " << C << endl;
// FRIEND_dot_TYPESlice_TYPESlice
cerr << "dot(A,B): " << int(dot(A,B)) << endl;
// FRIEND_max_TYPESlice
cerr << "max(A): " << max(A) << endl;
// FRIEND_min_TYPESlice
cerr << "min(A): " << min(A) << endl;
// FRIEND_prod_TYPESlice
cerr << "prod(A(0,5,1)): " << int(prod(A(0,5,1))) << endl;
// FRIEND_sum_TYPESlice
cerr << "sum(A): " << int(sum(A)) << endl;
//TYPESlice_CTOR_TYPEPick
C = A[I] + B[I]; // C = { 11 11 11 }
cerr << "C = A[I] + B[I]: " << C << endl;
}
main()
{
cerr << "Test Vector ByteVec class\n";
// TYPEVec_CTOR_TYPEPTR_I
cerr << "IntVec I(3,1,2): " << I << endl;
// TYPEVec_CTOR_I_TYPE_TYPE
cerr << "ByteVec A(10,1): " << A << endl;
// TYPEVec_CTOR_I_TYPE_TYPE
cerr << "ByteVec B = reverse(ByteVec(10,1,1)): " << B << endl;
test1();
test2();
}